﻿using System.Collections.Generic;
using Itau.IM.Carimbador.EntityObject;
using Itau.IM.Common.Mainframe.Book;

namespace Itau.IM.Carimbador.Contract
{
    /// <summary>
    /// Classe de resposta da operação ConsultarRegularSemPrazo
    /// </summary>
    public class ConsultarRegularSemPrazoResponse
    {
        #region Propriedades

        [BookNumberField(1, 8)]
        public int CodigoPrimeiraCurva { get; set; }

        //[BookNumberField(9, 6)]
        //public int QuantidadePrimeiraCurva { get; set; }

        [BookCollectionField(9, typeof(BookObjectFieldAttribute), typeof(PontoCurvaEO), 300, "000000000000000000          0000000000000000", true, "000000")]
        public List<PontoCurvaEO> PrimeiraCurva { get; set; }

        [BookNumberField(13215, 8)]
        public int CodigoTerceiraCurva { get; set; }

        //[BookNumberField(13223, 6)]
        //public int QuantidadeTerceiraCurva { get; set; }

        [BookCollectionField(13223, typeof(BookObjectFieldAttribute), typeof(PontoCurvaEO), 300, "000000000000000000          0000000000000000", true, "000000")]
        public List<PontoCurvaEO> TerceiraCurva { get; set; }

        [BookNumberField(26429, 1)]
        public int FlagUtilizacaoCurvaDefault { get; set; }

        [BookNumberField(26430, 1)]
        public int CodigoTipoValor { get; set; }

        [BookStringField(26431, 1)]
        public char IndicadorFimPrimeiraCurva { get; set; }

        [BookStringField(26432, 1)]
        public char IndicadorFimTerceiraCurva { get; set; }

        [BookStringField(26433, 15)]
        public string NomeIndexador { get; set; }

        [BookObjectField(31001)]
        public ConsultarControle AreaControle { get; set; }

        public int CodigoRetorno { get { return AreaControle != null ? AreaControle.CodigoSQL : 0; } set { } }
        public string MensagemRetorno { get { return AreaControle != null ? AreaControle.Mensagem : null; } set { } }

        #endregion Propriedades

        #region Métodos

        /// <summary>
        /// Construtor
        /// </summary>
        public ConsultarRegularSemPrazoResponse()
        {
        }

        /// <summary>
        /// Construtor
        /// </summary>
        public ConsultarRegularSemPrazoResponse(int codigoRetorno_,
            int flagUtilizacaoCurvaDefault_,
            int codigoTipoValor_,
            int codigoPrimeiraCurva_,
            int codigoTerceiraCurva_,
            string mensagemRetorno_,
            List<PontoCurvaEO> primeiraCurva_,
            List<PontoCurvaEO> terceiraCurva_)
        {
            this.CodigoRetorno = codigoRetorno_;
            this.FlagUtilizacaoCurvaDefault = flagUtilizacaoCurvaDefault_;
            this.CodigoTipoValor = codigoTipoValor_;
            this.CodigoPrimeiraCurva = codigoPrimeiraCurva_;
            this.CodigoTerceiraCurva = codigoTerceiraCurva_;
            this.MensagemRetorno = mensagemRetorno_;
            this.PrimeiraCurva = primeiraCurva_;
            this.TerceiraCurva = terceiraCurva_;
        }

        #endregion Métodos
    }
}